\chapter{Fonctionnalit\'es}
\label{chap:fonctionnalite}
\minitoc

\section{Pr\'eliminaires}

\subsection{Kerneos}

La version courante de JASMINe EoS permet de visualiser des modules Flex, d\'edi\'es \`a l'administration avanc\'ee de serveurs 
d'applications J2EE. L'id\'ee est de rendre la console ind\'ependante de JASMINe pour permettre le chargement de n'importe quel 
module Flex, d'o\`u le projet Kerneos (coeur de JASMINe EoS). Voici une liste des objectifs vis\'es :
\begin{bulletList}
 \item Ind\'ependance du c\oe ur (ne pas \^etre li\'e avec JASMINe EoS) ;
 \item Chargement dynamique des modules Flex ;
 \item D\'efinition de la notion de module d'administration ;
 \item Mise en \oe uvre de l'interaction dynamique de ces modules avec le c\oe ur.
\end{bulletList}

\begin{figure}
   \includegraphics[width=0.9\textwidth]{Fonctionnalite/eos_evolution}
   \caption{\label{fig:eos.evolution} L'\'evolutin de JASMINe EoS.}
\end{figure}

Dans la figure \ref{fig:eos.evolution} on peut observer l'\'evolution du syst\`eme. 
Les modules d\'ej\`a existents sont represent\'es
en bleu :
\begin{bulletList}
 \item QuickVisu - un module qui permet la visualisation rapide de l'\'etat du syst\`eme sur un graph;
 \item MBeanCmd Manager - un module pour l'ajout des commandes MBeanCmd;
 \item ConfEditor - un module pour cr\'eer des configurations de monitoring;
 \item Monitoring - un module de visualisation plus d\'etaill\'ee du syst\`eme. %(\ref{fig:eos.monitoring}).
\end{bulletList}
Ces modules, ainsi que les classes qui construisent le ``c\oe ur'', constituent l'application JASMINe EoS. On souhaite la s\'eparation de ces classes dans un nouveau projet, appel\'e Kerneos. Les modules de JASMINe EoS seront
de tel fa\c{c}on ind\'ependants du coeur.

Les modules en orange vont \^etre ajout\'es au syst\`eme. Il s'agit de :
\begin{bulletList}
 \item Rules Manager/Editor - un \'editeur de regles Drools pour implementer la fonction d'administration autonome, r\'ealis\'e par un autre stagiaire;
 \item Notification Board - notre outil de g\'estion de notifications.
 \item Notification Editor - l'outil d'\'edition de notifications.
\end{bulletList}



%-------------------------------------%


\subsection{Installateur graphique pour JASMINe Monitoring}
JASMINe Monitoring a des composants obligatoires (l'Event-Switch) et des composants qui ne sont pas obligatoires.
Ces composants sont charg\'e par JOnAS \`a partir d'un plan de d\'eploiement.
Un plan de d\'eploiement est un fichier XML qui d\'ecrit une suite de ressources qui doivent \^etre deploi\'ees dans l'ordre donn\'e.
%Le plan de d\'eploiement contient juste des r\'ef\'erences \`a des ressources. Le serveur JOnAS r\'ecup\'ere ces ressources d'un dep\^ot donn\'e. 
Ces ressources sont de type archive Java EE ou des bundles OSGi.
Un premier but de l'installeur est de g\'en\'erer le plan de d\'eploiement pour JASMINe Monitoring en fonction des 
parties choisies pour l'installation.

Le squelette de JASMINe Monitoring est l'Event Switch dont on a d\'ej\`a parl\'e dans la section \ref{subsec:desc.generale.existant.jasmine}. 
L'Event Switch est configur\'e par un fichier XML, appel\'e \verb|eventswitch-config.xml|.
Pour plus de d\'etails sur l'installation de JOnAS, voir la 
\href{http://jonas.ow2.org/JONAS_5_1_0/doc/doc-en/html/index.html}{documentation}.
Un deuxi\`eme but de cet installeur est de g\'en\'erer automatiquement ce fichier, \`a partir
des pr\'ef\'erences de l'utilisateur.

L'installateur sera r\'ealis\'e en utilisant \href{http://izpack.org/features/}{IzPack}, un g\'en\'erateur d'installateurs multi-plate-forme de logiciels .

%-------------------------------------%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{Module de gestion d'notifications}

\subsection{Cr\'eation d'une notification - Must}

Le nouveau module doit permettre la cr\'eation d'une notification. 
La premi\`ere \'etape est de d\'efinir le nom, le degr\'e de l'notification ou la gravit\'e et une description de
cette notification. Pour la gravit\'e, l'utilisateur choisira parmi des niveaux pred\'efinis (Info, Error, Critical, Fatal etc.).
Puis, l'utilisateur choisit l'\'ev\'enement d\'eclencheur
de l'notification. Cet \'ev\'enement peut \^etre constitu\'e d'une ou plusieurs conditions d'notification, li\'ees
par de operateurs AND ou OR. 
Ces conditions representent l'\textit{ensemble de conditions}.
Un outil qui permet la navigation parmi les attributs \`a
monitoriser sera utilis\'e pour ce pas. Dans ce navigateur les attributs seront organis\'es par
``th\`eme'' (des attributs de la JVM, des attributs phyisques, de genre chargement du processeur, etc).

Ainsi, l'utilisateur choisit l'op\'erateur : l'attribut peut \^etre \'egal, plus petit, plus grand qu'une mesure.
On peut aussi choisir des op\'erateurs sp\'ecifiques pour les cha\^ines de caract\`eres.
Si l'administrateur a cr\'e\'e plusieurs conditions, il doit pouvoir d\'efinir des r\'elations entre eux (voir 
\ref{sec:desc.generale.concurrence.comparaison}).

Pour chaque notification, il est n\'ecessaire de r\'eagir avec au moins une action, mais l'utilisateur peut en d\'efinir
plusieurs.
Ces actions seront pr\'ed\'efinies aussi :
\begin{itemize}
 \item envoi de mail vers un ou plusieurs boites de mail (Must);
 \item envoi de SNMP trap (May);
 \item envoi de message XMPP (May);
 \item sortie vers log4j (Must).
\end{itemize}

Chaque action sera configurable avec des param\`etres sp\'ecifiques. Par exemple, selon le degr\'e de gravit\'e de 
la notification, dans Notification Board, la notification sera affic\'ee avec des couleurs differentes, configurables.
%Tous ces parametres seront d\'efinis dans le document de Conception d\'etaill\'ee du projet.


%-------------------------------------%


\subsection{Gestion des notifications - Must}

Les notifications doivent pouvoir \^etre activ\'ees, d\'esactiv\'ees ou \'edit\'ees, en changeant l'ensemble
de conditions, la gravit\'e, la description et les actions associ\'ees.
Les param\`etres des actions associ\'ees doivent pouvoir \^etre aussi modifi\'ees.
Les notifications peuvent \^etre \'egalement supprim\'ees ou acquitt\'ees par l'administrateur.


%-------------------------------------%

\subsection{Rapport - sommaire notifications - Must}

L'utilisateur doit pouvoir consulter un rapport des notifications d\'eclench\'ees.
Ce rapport se pr\'esente sous la forme d'un tableau avec le nom de l'notification,
la date et l'heure du d\'eclenchement.
Un cliquant sur l'notification, l'utilisateur peut voir les d\'etails de la notification, 
la r\`egle accomplie qui a d\'eclench\'e la notification.

%-------------------------------------%

\subsection{Stockage des notifications - Must}

Les notifications seront archiv\'ees dans une base de donn\'ees qui pourra \^etre interrog\'ee
ult\'erieurement. 
A tout moment, l'administrateur doit pouvoir retrouver les notifications qu'il a d\'efini, m\^eme si 
elle ne se sont pas d\'eclench\'ees et aussi les notifications d\'eclench\'ees, avec leurs d\'etails.

%-------------------------------------%

\subsection{Proposition d'IHM}
\titlebox{Remarque}{Toutes les aspects IHM peuvent \^etre amen\'es \`a \^etre fortement modifi\'es.}

L'interface aura trois parties distinctes:
\begin{itemize}
 \item une partie Gestionnaire de R\`egles (Rules Manager/Editor ou ``Autonomous'') ;
 \item une partie \'Editeur de Notifications (Notification Editor) ;
 \item une partie de visualisation des notifications d\'eclench\'ees (Notification Board).
\end{itemize}

Comme on peut voir dans la figure \ref{fig:ihm}, 
dans la partie de gauche, on a une vue g\'en\'erale avec les notifications activ\'ees et les notifications desactiv\'ees.
Si on clique sur une notification de gauche, on peut l'\'editer et changer ses propri\'et\'es.
Dans la partie centrale, on peut cr\'eer des notifications, \'etablir leurs ensembles de conditions et les actions
correspondantes.
Si on prend l'exemple d'un ensemble de conditions plus compliqu\'e :
\begin{verbatim}
 when (Condition_1) AND (Condition_2 OR Condition_3) then Trigger_Alert
\end{verbatim}
o\`u
\begin{verbatim}
 Condition_1 : Physical:CPU.charge > 90%
 Condition_2 : Physical:Memory.used > 256 Mo
 Condition_3 : Physical:HDSpace.free < 30 Mo
\end{verbatim},
l'utilisateur doit d\'efinir un bloc pour les deux conditions entre les parenth\`eses, li\'ees par OR.
Ainsi, dans la partie \textit{WHEN} on aura :
\begin{verbatim}
 when Simple_condition AND Condition_block then Trigger_Alert
\end{verbatim}
avec
\begin{verbatim}
 Simple_condition = Condition_1
 Condition_block = Condition_2 OR Condition_3.
\end{verbatim}





 \begin{center}
% \begin{landscape}

\begin{figure}
   \includegraphics[width=1.0\textwidth]{Fonctionnalite/ihm}
   \caption{\label{fig:ihm} Proposition d'interface pour le module de gestion d'notifications.}
\end{figure}

% \end{landscape}
 \end{center}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%end chapter3.tex